package com.lw.entity.table;

import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;


/**
 * 通知公告表 表定义层。
 *
 * @author lw
 * @since 2025年05月15日 00:14:58
 */
public class TbNoticeTableDef extends TableDef {

    private static final long serialVersionUID = 1L;

    /**
     * 通知公告表
     */
    public static final TbNoticeTableDef TB_NOTICE = new TbNoticeTableDef();

    
    public final QueryColumn ID = new QueryColumn(this, "id");

    /**
     * 通知类型（关联字典编码：notice_type）
     */
    public final QueryColumn TYPE = new QueryColumn(this, "type");

    /**
     * 通知等级（字典code：notice_level）
     */
    public final QueryColumn LEVEL = new QueryColumn(this, "level");

    /**
     * 通知标题
     */
    public final QueryColumn TITLE = new QueryColumn(this, "title");

    /**
     * 通知内容
     */
    public final QueryColumn CONTENT = new QueryColumn(this, "content");

    /**
     * 创建人ID
     */
    public final QueryColumn CREATE_BY = new QueryColumn(this, "create_by");

    /**
     * 更新人ID
     */
    public final QueryColumn UPDATE_BY = new QueryColumn(this, "update_by");

    /**
     * 是否删除（0: 未删除, 1: 已删除）
     */
    public final QueryColumn IS_DELETED = new QueryColumn(this, "is_deleted");

    /**
     * 创建时间
     */
    public final QueryColumn CREATE_TIME = new QueryColumn(this, "create_time");

    /**
     * 撤回时间
     */
    public final QueryColumn REVOKE_TIME = new QueryColumn(this, "revoke_time");

    /**
     * 目标类型（1: 全体, 2: 指定）
     */
    public final QueryColumn TARGET_TYPE = new QueryColumn(this, "target_type");

    /**
     * 更新时间
     */
    public final QueryColumn UPDATE_TIME = new QueryColumn(this, "update_time");

    /**
     * 发布时间
     */
    public final QueryColumn PUBLISH_TIME = new QueryColumn(this, "publish_time");

    /**
     * 发布人ID
     */
    public final QueryColumn PUBLISHER_ID = new QueryColumn(this, "publisher_id");

    /**
     * 发布状态（0: 未发布, 1: 已发布, -1: 已撤回）
     */
    public final QueryColumn PUBLISH_STATUS = new QueryColumn(this, "publish_status");

    /**
     * 目标人ID集合（多个使用英文逗号,分割）
     */
    public final QueryColumn TARGET_USER_IDS = new QueryColumn(this, "target_user_ids");

    /**
     * 所有字段。
     */
    public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");

    /**
     * 默认字段，不包含逻辑删除或者 large 等字段。
     */
    public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{ID, TITLE, CONTENT, TYPE, LEVEL, TARGET_TYPE, TARGET_USER_IDS, PUBLISHER_ID, PUBLISH_STATUS, PUBLISH_TIME, REVOKE_TIME, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, IS_DELETED};

    public TbNoticeTableDef() {
        super("", "tb_notice");
    }

    private TbNoticeTableDef(String schema, String name, String alisa) {
        super(schema, name, alisa);
    }

    public TbNoticeTableDef as(String alias) {
        String key = getNameWithSchema() + "." + alias;
        return getCache(key, k -> new TbNoticeTableDef("", "tb_notice", alias));
    }

}
